package org.cloudlab.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 投稿记录
 * 每投稿一个期刊, 对应一个投稿记录
 *
 * @author Liu Yicong
 * @date 2023/9/7
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("basic_sub_record")
public class SubRecord implements Serializable {

	@TableId(type = IdType.AUTO)
	private Long id;

	/**
	 * 所属文章id
	 */
	@TableField("paper_id")
	private Long paperId;

	/**
	 * 文章简写
	 */
	@TableField("paper_acronym")
	private String paperAcronym;

	/**
	 * 负责人Id
	 */
	@TableField("belong_user_id")
	private Long belongUserId;

	/**
	 * 负责人昵称
	 */
	@TableField("belong_nick_name")
	private String belongNickName;

	/**
	 * 投稿期刊Id
	 */
	@TableField("sub_journal_id")
	private Long subJournalId;

	/**
	 * 投稿期刊名称
	 */
	@TableField("sub_journal_name")
	private String subJournalName;


	/**
	 * 投稿时间
	 */
	@TableField("sub_time")
	@JsonFormat(pattern = "yyyy-MM-dd")
	private Date subTime;

	/**
	 * 当前状态
	 */
	@TableField("current_state")
	private String currentState;

	/**
	 * 详细状态
	 */
	@TableField("state_details")
	private String stateDetails;

	/**
	 * 是否拒稿(Y/N)
	 * 已废止, 使用 {@link this#currentState} 来代替这个字段
	 */
	@Deprecated
	@TableField(exist = false)
	private String isRejected;

	/**
	 * 拒稿时间
	 * 已废止, 使用 {@link this#finishTime} 来代替这个字段
	 */
	@Deprecated
	@TableField(exist = false)
	@JsonFormat(pattern = "yyyy-MM-dd")
	private Date rejectedTime;

	/**
	 * 完结时间
	 */
	@TableField("finish_time")
	@JsonFormat(pattern = "yyyy-MM-dd")
	private Date finishTime;

	/**
	 * 拒稿原因
	 */
	@TableField("rejected_reason")
	private String rejectedReason;

	/**
	 * 追踪链接
	 */
	@TableField("track_link")
	private String trackLink;

	/**
	 * 备注
	 * 拒稿原因
	 */
	@TableField("others")
	private String others;

	/**
	 * 创建时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
	@TableField("create_time")
	private Date createTime;

	/**
	 * 创建人
	 */
	@TableField("create_user_id")
	private Long createUserId;

	/**
	 * 更新人
	 */
	@TableField("update_user_id")
	private long updateUserId;

	/**
	 * 更新时间
	 */
	@TableField("update_time")
	@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
	private Date updateTime;

	/**
	 * 是否删除, 1表示删除, 0表示正常
	 */
	@JsonIgnore//仅在后台数据库中存储, 不传送给前端
	@TableField("is_remove")
	private int isRemove;
}
